1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.glib.ghook; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 34 extern (C): 35 36 alias _GHook GHook; 37 alias _GHookList GHookList; 38 alias int function (_GHook*, _GHook*) GHookCompareFunc; 39 alias int function (_GHook*, void*) GHookFindFunc; 40 alias void function (_GHook*, void*) GHookMarshaller; 41 alias int function (_GHook*, void*) GHookCheckMarshaller; 42 alias void function (void*) GHookFunc; 43 alias int function (void*) GHookCheckFunc; 44 alias void function (_GHookList*, _GHook*) GHookFinalizeFunc; 45 alias _Anonymous_0 GHookFlagMask; 46 47 enum _Anonymous_0 48 { 49 G_HOOK_FLAG_ACTIVE = 1, 50 G_HOOK_FLAG_IN_CALL = 2, 51 G_HOOK_FLAG_MASK = 15 52 } 53 54 struct _GHookList 55 { 56 gulong seq_id; 57 guint hook_size; 58 guint is_setup; 59 GHook* hooks; 60 gpointer dummy3; 61 GHookFinalizeFunc finalize_hook; 62 gpointer[2] dummy; 63 } 64 65 struct _GHook 66 { 67 gpointer data; 68 GHook* next; 69 GHook* prev; 70 guint ref_count; 71 gulong hook_id; 72 guint flags; 73 gpointer func; 74 GDestroyNotify destroy; 75 } 76 77 version(Derelict_Link_Static) 78 { 79 extern( C ) nothrow 80 { 81 void g_hook_list_init(GHookList* hook_list, guint hook_size); 82 void g_hook_list_clear(GHookList* hook_list); 83 GHook* g_hook_alloc(GHookList* hook_list); 84 void g_hook_free(GHookList* hook_list, GHook* hook); 85 GHook* g_hook_ref(GHookList* hook_list, GHook* hook); 86 void g_hook_unref(GHookList* hook_list, GHook* hook); 87 gboolean g_hook_destroy(GHookList* hook_list, gulong hook_id); 88 void g_hook_destroy_link(GHookList* hook_list, GHook* hook); 89 void g_hook_prepend(GHookList* hook_list, GHook* hook); 90 void g_hook_insert_before(GHookList* hook_list, GHook* sibling, GHook* hook); 91 void g_hook_insert_sorted(GHookList* hook_list, GHook* hook, GHookCompareFunc func); 92 GHook* g_hook_get(GHookList* hook_list, gulong hook_id); 93 GHook* g_hook_find(GHookList* hook_list, gboolean need_valids, GHookFindFunc func, gpointer data); 94 GHook* g_hook_find_data(GHookList* hook_list, gboolean need_valids, gpointer data); 95 GHook* g_hook_find_func(GHookList* hook_list, gboolean need_valids, gpointer func); 96 GHook* g_hook_find_func_data(GHookList* hook_list, gboolean need_valids, gpointer func, gpointer data); 97 GHook* g_hook_first_valid(GHookList* hook_list, gboolean may_be_in_call); 98 GHook* g_hook_next_valid(GHookList* hook_list, GHook* hook, gboolean may_be_in_call); 99 gint g_hook_compare_ids(GHook* new_hook, GHook* sibling); 100 void g_hook_list_invoke(GHookList* hook_list, gboolean may_recurse); 101 void g_hook_list_invoke_check(GHookList* hook_list, gboolean may_recurse); 102 void g_hook_list_marshal(GHookList* hook_list, gboolean may_recurse, GHookMarshaller marshaller, gpointer marshal_data); 103 void g_hook_list_marshal_check(GHookList* hook_list, gboolean may_recurse, GHookCheckMarshaller marshaller, gpointer marshal_data); 104 } 105 } 106 else 107 { 108 extern( C ) nothrow 109 { 110 alias da_g_hook_list_init = void function(GHookList* hook_list, guint hook_size); 111 alias da_g_hook_list_clear = void function(GHookList* hook_list); 112 alias da_g_hook_alloc = GHook* function(GHookList* hook_list); 113 alias da_g_hook_free = void function(GHookList* hook_list, GHook* hook); 114 alias da_g_hook_ref = GHook* function(GHookList* hook_list, GHook* hook); 115 alias da_g_hook_unref = void function(GHookList* hook_list, GHook* hook); 116 alias da_g_hook_destroy = gboolean function(GHookList* hook_list, gulong hook_id); 117 alias da_g_hook_destroy_link = void function(GHookList* hook_list, GHook* hook); 118 alias da_g_hook_prepend = void function(GHookList* hook_list, GHook* hook); 119 alias da_g_hook_insert_before = void function(GHookList* hook_list, GHook* sibling, GHook* hook); 120 alias da_g_hook_insert_sorted = void function(GHookList* hook_list, GHook* hook, GHookCompareFunc func); 121 alias da_g_hook_get = GHook* function(GHookList* hook_list, gulong hook_id); 122 alias da_g_hook_find = GHook* function(GHookList* hook_list, gboolean need_valids, GHookFindFunc func, gpointer data); 123 alias da_g_hook_find_data = GHook* function(GHookList* hook_list, gboolean need_valids, gpointer data); 124 alias da_g_hook_find_func = GHook* function(GHookList* hook_list, gboolean need_valids, gpointer func); 125 alias da_g_hook_find_func_data = GHook* function(GHookList* hook_list, gboolean need_valids, gpointer func, gpointer data); 126 alias da_g_hook_first_valid = GHook* function(GHookList* hook_list, gboolean may_be_in_call); 127 alias da_g_hook_next_valid = GHook* function(GHookList* hook_list, GHook* hook, gboolean may_be_in_call); 128 alias da_g_hook_compare_ids = gint function(GHook* new_hook, GHook* sibling); 129 alias da_g_hook_list_invoke = void function(GHookList* hook_list, gboolean may_recurse); 130 alias da_g_hook_list_invoke_check = void function(GHookList* hook_list, gboolean may_recurse); 131 alias da_g_hook_list_marshal = void function(GHookList* hook_list, gboolean may_recurse, GHookMarshaller marshaller, gpointer marshal_data); 132 alias da_g_hook_list_marshal_check = void function(GHookList* hook_list, gboolean may_recurse, GHookCheckMarshaller marshaller, gpointer marshal_data); 133 } 134 135 __gshared 136 { 137 da_g_hook_list_init g_hook_list_init; 138 da_g_hook_list_clear g_hook_list_clear; 139 da_g_hook_alloc g_hook_alloc; 140 da_g_hook_free g_hook_free; 141 da_g_hook_ref g_hook_ref; 142 da_g_hook_unref g_hook_unref; 143 da_g_hook_destroy g_hook_destroy; 144 da_g_hook_destroy_link g_hook_destroy_link; 145 da_g_hook_prepend g_hook_prepend; 146 da_g_hook_insert_before g_hook_insert_before; 147 da_g_hook_insert_sorted g_hook_insert_sorted; 148 da_g_hook_get g_hook_get; 149 da_g_hook_find g_hook_find; 150 da_g_hook_find_data g_hook_find_data; 151 da_g_hook_find_func g_hook_find_func; 152 da_g_hook_find_func_data g_hook_find_func_data; 153 da_g_hook_first_valid g_hook_first_valid; 154 da_g_hook_next_valid g_hook_next_valid; 155 da_g_hook_compare_ids g_hook_compare_ids; 156 da_g_hook_list_invoke g_hook_list_invoke; 157 da_g_hook_list_invoke_check g_hook_list_invoke_check; 158 da_g_hook_list_marshal g_hook_list_marshal; 159 da_g_hook_list_marshal_check g_hook_list_marshal_check; 160 } 161 }